package com.mybatis.mapper;

import com.mybatis.pojo.Dept;
import com.mybatis.pojo.Emp;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Copyright (c) 2023-2033 All Rights Reserved
 *
 * TODO：数据库中字段名与类属性名不一致
 *   emp_name 与 empName
 *   1. 通过SQL语句对不一致的字段名起别名
 *   2. 在Mybatis配置文件设置全局配置，自动将下划线映射为驼峰
 *   3. 通过resultMap自定义映射关系
 *
 * TODO：多对一关系
 *   1. 通过级联方式处理映射关系
 *   2. 通过 association 处理
 *   3. 通过分步操作处理
 *
 * @date: 2023/10/17
 */
public interface EmpMapper {

    /**
     * 查询所有员工：数据库中字段名与类属性名不一致
     */
    List<Emp> getAllEmp();

    List<Emp> getAllEmpByResultMap();

    /**
     * 查询员工及其所在部门信息：多对一映射关系
     * 返回Emp：部门信息是员工的一个属性
     */
    Emp getEmpAndDept(@Param("eid") Integer eid);

    /**
     * 查询员工及其所在部门信息：多对一映射关系，分步
     * 1. 查询员工信息
     */
    Emp getEmpAndDeptByStepOne(@Param("eid") Integer eid);


    /**
     * 一对多，分步查询部门及部门下所有员工信息
     * 2. 查询对应部门下的员工信息
     */
    List<Emp> getDeptAndEmpByStepTwo(@Param("did") Integer did);

}
